﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Iudicium.Servicio.CRN
{
    /// <summary>
    /// Summary description for ServicioCRN
    /// </summary>
    public class ServicioCRN
    {
        public ServicioCRN()
        {
            ;
        }

        public static Servicio GetServicioById(Servicio.TipoServicio tipo, int servicioId)
        {
            if (tipo == Servicio.TipoServicio.Tramite)
            {
                return Iudicium.Tramites.CRN.TramiteCRN.GetTramiteById(servicioId);
            }
            return null;
        }

        public static Servicio GetServicioById(int servicioId)
        {
            if (servicioId <= 0)
            {
                throw new ArgumentException("ServicioId no puede ser menor que cero.");
            }
            string tipo = "";
            ServicioDSTableAdapters.ServicioTableAdapter adapter = new ServicioDSTableAdapters.ServicioTableAdapter();
            adapter.GetTipoServicioByServicioId(servicioId,ref tipo);

            if(string.IsNullOrEmpty(tipo))
            {
                throw new Exception("El SQL se ejecuto correctamente pero devolvio un valor nulo o vacio");
            }

            return GetServicioById(Servicio.GetTipoServicioFromString(tipo), servicioId);
        }

        public static Servicio.TipoServicio GetTipoServicioByServicioId(int servicioId)
        {
            if (servicioId <= 0)
            {
                throw new ArgumentException("ServicioId no puede ser menor que cero.");
            }
            string tipo = "";
            ServicioDSTableAdapters.ServicioTableAdapter adapter = new ServicioDSTableAdapters.ServicioTableAdapter();
            adapter.GetTipoServicioByServicioId(servicioId, ref tipo);

            if (string.IsNullOrEmpty(tipo))
            {
                throw new Exception("El SQL se ejecuto correctamente pero devolvio un valor nulo o vacio");
            }
            return Servicio.GetTipoServicioFromString(tipo);
        }

        public static void FinalizarServicio(int servicioId, DateTime fechaFin)
        {
            if (servicioId <= 0)
            {
                throw new ArgumentException("ServicioId no puede ser menor o igual que cero.");
            }

            ServicioDSTableAdapters.ServicioTableAdapter adapter = new ServicioDSTableAdapters.ServicioTableAdapter();
            adapter.FinalizarServicio(servicioId, fechaFin);
        }

        public static void EntregarServicio(int servicioId, DateTime fechaEntrega, string entregadoA, string observacion)
        {
            if (servicioId <= 0)
            {
                throw new ArgumentException("ServicioId no puede ser menor o igual que cero.");
            }

            ServicioDSTableAdapters.ServicioTableAdapter adapter = new ServicioDSTableAdapters.ServicioTableAdapter();
            adapter.EntregarServicio(servicioId, fechaEntrega, entregadoA, observacion);
        }
    }
}